import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'

Vue.use(Vuex) // 给Vue原型上添加$store属性

const store = new Vuex.Store({ // new一个唯一的store仓库对象
  /**
   * state: {
   *  属性名: 初始值
   * },
   * mutations: { // (同步)唯一修改state的地方
   *
   * },
   * actions: { // (异步)放的是异步代码然后提交给mutations来影响state
   *
   * },
   * getters: { // 依赖state的值, 定义计算属性并返回值使用
   *
   * }
   * modules: { // 分模块(每个模块对象里还有这5个核心概念, 分散管理)
   *
   * }
   */
  modules: {
    // 模块名: 模块对象
    // app: app
    app,
    settings,
    user
  },
  getters
})

export default store
